//
//  TestCustoObjectVC.m
//  技术点总结
//
//  Created by tianlong on 2018/6/7.
//  Copyright © 2018年 tianlong. All rights reserved.
//

#import "TestCustoObjectVC.h"
#import "Person.h"

@interface TestCustoObjectVC ()
@property (copy, nonatomic) Person *p4;
@property (strong, nonatomic) Person *p5;
@end

@implementation TestCustoObjectVC

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (IBAction)test:(id)sender {
    Person *p = [[Person alloc] init];
    p.name = @"隔壁老王";
    p.dog = [[Dog alloc] init];
    
    Person *p1 = p;
    Person *p2 = [p copy];
    Person *p3 = [p mutableCopy];
    
    self.p4 = p;
    self.p5 = p;
    NSLog(@"改名前：\np（源头）                = %@\np1(等号赋值)             = %@\np2（copy赋值）           = %@\np3（mutableCopy赋值）    = %@\np4（copy修饰，等号赋值）   = %@\np5（strong修饰，等号赋值） = %@",p.name,p1.name,p2.name,p3.name,self.p4.name,self.p5.name);
    NSLog(@"\np（源头）                = %p\np1(等号赋值)             = %p\np2（copy赋值）           = %p\np3（mutableCopy赋值）    = %p\np4（copy修饰，等号赋值）   = %p\np5（strong修饰，等号赋值） = %p",p,p1,p2,p3,self.p4,self.p5);
    
    p.name = @"小白脸";
    
    NSLog(@"改名后：\np（源头）                = %@\np1(等号赋值)             = %@\np2（copy赋值）           = %@\np3（mutableCopy赋值）    = %@\np4（copy修饰，等号赋值）   = %@\np5（strong修饰，等号赋值） = %@",p.name,p1.name,p2.name,p3.name,self.p4.name,self.p5.name);
    /**
     p（源头）                = 0x6040000c4ad0
     p1(等号赋值)             = 0x6040000c4ad0  浅复制
     p2（copy赋值）           = 0x6040000c79a0  深复制
     p3（mutableCopy赋值）    = 0x6000000c54e0  深复制
     p4（copy修饰，等号赋值）   = 0x6000000c8ce0  深复制
     p5（strong修饰，等号赋值） = 0x6040000c4ad0  浅复制
     */
}



@end
